home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #6 / Amiga Plus CD - 2004 - No. 06.iso / AmiSoft / Misc / salv / DiskValid.lha / DiskValid.c next >
C/C++ Source or Header  |  2004-05-26  |  7KB  |  260 lines

  1. /*  DiskValid GUI
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Peter Hutchison
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <string.h>
  18.  
  19. #include <proto/dos.h>
  20. #include <proto/exec.h>
  21. #include <proto/intuition.h>
  22. #include <proto/gadtools.h>
  23. #include <proto/graphics.h>
  24. #include <proto/utility.h>
  25.  
  26. #include "DiskValid.h"
  27.  
  28. struct Screen         *Scr = NULL;
  29. UBYTE                 *PubScreenName = NULL;
  30. APTR                   VisualInfo = NULL;
  31. struct Window         *DiskValidGUIWnd = NULL;
  32. struct Gadget         *DiskValidGUIGList = NULL;
  33. struct IntuiMessage    DiskValidGUIMsg;
  34. struct Gadget         *DiskValidGUIGadgets[7];
  35. UWORD                  DiskValidGUILeft = 10;
  36. UWORD                  DiskValidGUITop = 15;
  37. UWORD                  DiskValidGUIWidth = 325;
  38. UWORD                  DiskValidGUIHeight = 244;
  39. UBYTE                 *DiskValidGUIWdt = (UBYTE *)"DiskValid GUI";
  40.  
  41. int    verbose_flag, fix_flag, analyse_flag, td64_flag;
  42. UBYTE  cmd[50];
  43.  
  44. struct TextAttr topaz8 = {
  45.     ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
  46.  
  47. UWORD DiskValidGUIGTypes[] = {
  48.     STRING_KIND,
  49.     CHECKBOX_KIND,
  50.     CHECKBOX_KIND,
  51.     CHECKBOX_KIND,
  52.     CHECKBOX_KIND,
  53.     BUTTON_KIND,
  54.     BUTTON_KIND
  55. };
  56.  
  57. struct NewGadget DiskValidGUINGad[] = {
  58.     55, 14, 143, 15, (UBYTE *)"Disk", NULL, GD_Disk, PLACETEXT_LEFT, NULL, NULL,
  59.     18, 51, 26, 11, (UBYTE *)"Verbose", NULL, GD_Verbose, PLACETEXT_RIGHT, NULL, NULL,
  60.     18, 80, 26, 11, (UBYTE *)"Fix", NULL, GD_Fix, PLACETEXT_RIGHT, NULL, NULL,
  61.     18, 111, 26, 11, (UBYTE *)"Analyse", NULL, GD_Analyse, PLACETEXT_RIGHT, NULL, NULL,
  62.     17, 141, 26, 11, (UBYTE *)"TD64 Support", NULL, GD_TD64_Support, PLACETEXT_RIGHT, NULL, NULL,
  63.     15, 193, 99, 24, (UBYTE *)"Start Check", NULL, GD_Start_Check, PLACETEXT_IN, NULL, NULL,
  64.     218, 193, 62, 24, (UBYTE *)"Cancel", NULL, GD_Cancel, PLACETEXT_IN, NULL, NULL
  65. };
  66.  
  67. ULONG DiskValidGUIGTags[] = {
  68.     (GTST_String), (ULONG)"DH0:", (GTST_MaxChars), 32, (TAG_DONE),
  69.     (TAG_DONE),
  70.     (TAG_DONE),
  71.     (TAG_DONE),
  72.     (TAG_DONE),
  73.     (TAG_DONE),
  74.     (TAG_DONE)
  75. };
  76.  
  77. /* Prototypes */
  78. int SetupScreen(void);
  79. void CloseDownScreen( void );
  80. int HandleDiskValidGUIIDCMP( void );
  81. int Handle_Buttons(struct IntuiMessage *message);
  82. void RunDiskValid(void);
  83. int OpenDiskValidGUIWindow( void );
  84. int CloseDiskValidGUIWindow( void );
  85.  
  86. /* Program code */
  87.  
  88. int SetupScreen( void )
  89. {
  90.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  91.         return( 1L );
  92.  
  93.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  94.         return( 2L );
  95.  
  96.     return( 0L );
  97. }
  98.  
  99. void CloseDownScreen( void )
  100. {
  101.     if ( VisualInfo ) {
  102.         FreeVisualInfo( VisualInfo );
  103.         VisualInfo = NULL;
  104.     }
  105.  
  106.     if ( Scr        ) {
  107.         UnlockPubScreen( NULL, Scr );
  108.         Scr = NULL;
  109.     }
  110. }
  111.  
  112. int HandleDiskValidGUIIDCMP( void )
  113. {
  114.     struct IntuiMessage    *m;
  115.     BOOL            running = TRUE;
  116.  
  117.     while(running ) {
  118.                 Wait(1L << DiskValidGUIWnd->UserPort->mp_SigBit);
  119.                 m = GT_GetIMsg( DiskValidGUIWnd->UserPort );
  120.         CopyMem(( char * )m, ( char * )&DiskValidGUIMsg, (long)sizeof( struct IntuiMessage ));
  121.  
  122.         GT_ReplyIMsg( m );
  123.  
  124.         switch ( DiskValidGUIMsg.Class ) {
  125.  
  126.             case    IDCMP_REFRESHWINDOW:
  127.                 GT_BeginRefresh( DiskValidGUIWnd );
  128.                 GT_EndRefresh( DiskValidGUIWnd, TRUE );
  129.                 break;
  130.  
  131.             case    IDCMP_CLOSEWINDOW:
  132.                 running = CloseDiskValidGUIWindow();
  133.                 break;
  134.  
  135.             case    IDCMP_GADGETUP:
  136.                                 running = Handle_Buttons(m);
  137.                                 break;
  138.         }
  139.     }
  140.     return( running );
  141. }
  142.  
  143. int Handle_Buttons(struct IntuiMessage *message)
  144. {
  145.     struct Gadget *gadget;
  146.     UWORD id;
  147.     int running = TRUE;
  148.     
  149.     gadget = (struct Gadget *)message->IAddress;
  150.     id = gadget->GadgetID;
  151.     
  152.     if (id == GD_Verbose) 
  153.         verbose_flag = !verbose_flag;
  154.     if (id == GD_Fix)
  155.         fix_flag = !fix_flag;
  156.     if (id == GD_Analyse)
  157.         analyse_flag = !analyse_flag;
  158.     if (id == GD_TD64_Support)
  159.         td64_flag = !td64_flag;
  160.     if (id == GD_Start_Check)
  161.         RunDiskValid();
  162.     if (id == GD_Cancel)
  163.         running = FALSE;
  164.         
  165.     return(running);
  166. }
  167.  
  168. void RunDiskValid(void)
  169. {
  170.     BPTR file;
  171.     
  172.     strcpy(cmd,"DiskValid ");
  173.     strcat(cmd, ((struct StringInfo *)DiskValidGUIGadgets[0]->SpecialInfo)->Buffer);
  174.     if (verbose_flag)
  175.         strcat(cmd, " VERBOSE");
  176.     if (fix_flag)
  177.         strcat(cmd, " FIX");
  178.     if (analyse_flag)
  179.         strcat(cmd, " ANALYSE");
  180.     if (td64_flag)
  181.         strcat(cmd, " TD64");
  182.     if (file = Open("CON:40/300/300/200/DiskValid/CLOSE/WAIT", MODE_READWRITE)) {
  183.       if (!Execute(cmd, NULL, file))
  184.          DisplayBeep(Scr);
  185.       Close(file);
  186.     }
  187. }
  188.           
  189. int OpenDiskValidGUIWindow( void )
  190. {
  191.     struct NewGadget    ng;
  192.     struct Gadget    *g;
  193.     UWORD        lc, tc;
  194.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  195.  
  196.     if ( ! ( g = CreateContext( &DiskValidGUIGList )))
  197.         return( 1L );
  198.  
  199.     for( lc = 0, tc = 0; lc < DiskValidGUI_CNT; lc++ ) {
  200.  
  201.         CopyMem((char * )&DiskValidGUINGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  202.  
  203.         ng.ng_VisualInfo = VisualInfo;
  204.         ng.ng_TextAttr   = &topaz8;
  205.         ng.ng_LeftEdge  += offx;
  206.         ng.ng_TopEdge   += offy;
  207.  
  208.         DiskValidGUIGadgets[ lc ] = g = CreateGadgetA((ULONG)DiskValidGUIGTypes[ lc ], g, &ng, ( struct TagItem * )&DiskValidGUIGTags[ tc ] );
  209.  
  210.         while( DiskValidGUIGTags[ tc ] ) tc += 2;
  211.         tc++;
  212.  
  213.         if ( NOT g )
  214.             return( 2L );
  215.     }
  216.  
  217.     if ( ! ( DiskValidGUIWnd = OpenWindowTags( NULL,
  218.                 WA_Left,    DiskValidGUILeft,
  219.                 WA_Top,        DiskValidGUITop,
  220.                 WA_Width,    DiskValidGUIWidth,
  221.                 WA_Height,    DiskValidGUIHeight + offy,
  222.                 WA_IDCMP,    STRINGIDCMP|CHECKBOXIDCMP|BUTTONIDCMP|IDCMP_GADGETDOWN|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  223.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  224.                 WA_Gadgets,    DiskValidGUIGList,
  225.                 WA_Title,    DiskValidGUIWdt,
  226.                 WA_ScreenTitle,    "GadToolsBox V2.0b © 1991-1993",
  227.                 WA_PubScreen,    Scr,
  228.                 TAG_DONE )))
  229.     return( 4L );
  230.  
  231.     GT_RefreshWindow( DiskValidGUIWnd, NULL );
  232.  
  233.     return( 0L );
  234. }
  235.  
  236. int CloseDiskValidGUIWindow( void )
  237. {
  238.     if ( DiskValidGUIWnd        ) {
  239.         CloseWindow( DiskValidGUIWnd );
  240.         DiskValidGUIWnd = NULL;
  241.     }
  242.  
  243.     if ( DiskValidGUIGList      ) {
  244.         FreeGadgets( DiskValidGUIGList );
  245.         DiskValidGUIGList = NULL;
  246.     }
  247.         return(0);
  248. }
  249.  
  250. void main(void)
  251. {
  252.     SetupScreen();
  253.     OpenDiskValidGUIWindow();
  254.     
  255.     HandleDiskValidGUIIDCMP();
  256.     
  257.     CloseDiskValidGUIWindow();
  258.     CloseDownScreen();
  259. }    
  260.